// 定义方法并返回值
function getInfo(name: string, age: number): string {
  return `${name}${age}`;
};
getInfo("haodni", 111);

// 定义匿名函数的方法
let getInfo1 = function (name: string, age: number): string {
  return `${name}${age}`;
};
getInfo1("好人", 19);

// 没有返回值
function run(): void {
  console.log(`没有返回值`);
};
run();

// 可选参数
// js中的方法的实参可以不一样，但是ts中的必须一样，如果不一样就需要配置
// ？配置可选参数，注意：可选参数必须配置到参数的后面
function run2(name: string, age?: number): string {
  return `${name}${age}好的`;
};
run2("cz");

// 设置默认参数
function run3(name: string, age: number = 20): void {
  console.log(`${name}${age}`);
};
run3("hao");

// 剩余参数
//三点的运算符，接受新的参数传递过来的值
function sum(a: number, b: number, c: number): number {
  return a + b + c;
};
sum(1, 2, 3);
function sum1(...res: number[]): number {
  let sum: number = 0;
  for (let i: number = 0; i < res.length; i++) {
    sum += res[i];
  };
  return sum;
};
console.log(sum1(2, 2));

// ts函数的重载
function css(name: string): string;
function css(name: string, age: number): string;
function css(name: any, age?: any): any {
  if (age) {
    return `我叫${name}, 我年龄是${age}`;
  } else {
    return `我叫${name}`;
  };
};
console.log(css("好", 12));
console.log(css("好"));